Certificación en Ciencia de datos

Módulo 3 - Importancia de la visualiación e intro a ggplot2

Natalia da Silva

2024 -Módulo 3

Sobre mi

  • Profesora Adjunta en el Instituto de Estadística (IESTA-UDELAR), Uruguay.

  • Lic. en Estadística y Lic. Economía: UDELAR.

  • Doctorado y Maestría en Estadística: Iowa State University, USA.

  • Temas de investigación: aprendizaje estadístico, estadística computacional, visualización estadística, ciencia de datos e investigación reproducible.

Presentación de hoy

La presentación está disponible en:

https://natydasilva.github.io/M3_viz1/

Denominador común

Estadística es una ciencia transversal que se encarga de recolectar información, analizar y entender los datos y modelar la incertidumbre de los mismos.

Métodos computacionales todo el ciclo de vida de los datos sucede a través de métodos computacionales, desde el registro y almacenamiento, su análisis, y su comunicación.

Foco hoy

Nos enfocaremos en la visualización de datos.

Importancia de la visulización

“The greatest value of a picture is when it forces us to notice what we never expected to see.” (Tukey 1977)

“Graphs provide powerful tools both for analyzing scientific data and for communicating quantitative information” (Cleveland and McGuill 1985)

Pocos se escapan a este pensamiento no adecuado

  • Los cálculos numéricos son exactos pero los gráficos son toscos o aproximados.

  • Para cada tipo de datos estadísticos hay un conjunto de cálculos que constituyen un análisis estadístico correcto.

  • Hacer cálculos intrincados es virtuoso mientras que mirar los datos es hacer trampa, (Anscombe 1973).

Visualización Estadística

La visualización juega un rol importante en todas las etapas del análisis estadístico.

  • Exploración: Encontrar patrones generales y específicos en los datos.

  • Modelado: Chequear supuestos sobre los datos antes de modelar. Se puede hacer inferencia gráfica (linea relativamente nueva).

  • Diagnóstico: Visualizar el modelo en el espacio de los datos ó los datos en el espacio del modelo.

EDA

Análisis exploratorio de datos (EDA en inglés), es un proceso iterativo para explorar ampliamente diversos aspectos de los datos.

Origen: John Tukey incentiva a los estadísticos a explorar los datos, y posiblemente formular hipótesis que podrían llevar a recolectar nuevos datos y experimentos.

EDA

  • Nos ayuda a entender nuestros datos.

  • Necesitamos definir preguntas que guien nuestra investigación.

  • Cada pregunta se enfoca en algo específico sobre los datos y esto define el tipo de datos, el modelo y las posibles transformaciones.

  • Punto clave definir preguntas interesantes para nuestro problema.

¿Cuál es la relación entre X e Y?

X Y
5.0 0.0
7.8 0.9
11.7 5.9
10.1 13.0
3.4 16.0
-3.9 12.0
-10.3 4.9
-15.3 0.6
-16.9 0.0
-14.1 -1.4
-8.5 -6.9
-1.9 -13.8
5.6 -15.8
11.3 -11.0
10.9 -4.0
6.5 -0.3

La relación entre X e Y es amorosa!

Tranformar datos en tablas

  • Los estadísticos recomiendan el uso de gráficos pero a menudo no siguen esta recomendación cuando presentan su propia investigación.

  • Ellos analizan algunos artículos en JASA y muestran algunos ejemplos de como transformar tablas en gráficos.

Tranformar datos en tablas

  • Ellos dicen que hay una buena razón para ser haraganes, ya que toma mucho tiempo hacer una buena visualización.

  • Buenos gráficos son posibles, especialmente cuando pensamos en la razón de querer mostrar los valores en primer lugar.

  • Si las revistas top en el área de estadística no lo hace aún bien existe espacio para seguir mejorando.

(Gelman, Pasarica, and Dodhia 2002)

¿Cuánto es la media muestral para x e y?

¿Cuánto es la media muestral para x e y?

\(\bar x =\) 54.27 y \(\bar y =\) 47.83

¿Cuánto es la media muestral para x e y?

¿Cuánto es la media muestral para x e y?

\(\bar x =\) 54.27 y \(\bar y =\) 47.84

¿Cuánto es la media muestral para x e y?

¿Cuánto es la media muestral para x e y?

\(\bar x =\) 54.26 y \(\bar y =\) 47.83

¿Porqué usamos visualización?

  • Mismos resumenes estadísticos.

  • Pero distribuciones muy diferentes.

  • Link algoritmo.

¿Porqué usamos visualización?

  • Los gráficos proveen más información que los resúmenes numéricos..
  • \(n = 11\)
  • \(\bar x= 9.0\)
  • \(\bar y = 7.5\)
  • \(\hat \beta_1= 0.5\)
  • \(y = 3 + 0.5 x\)
  • \(R^2 = 0.667\)
  • \(....\)

Visualizaciones efectivas

  • No todas las visualizaciones son igualmente efectivas.

  • Hay diferentes criterios para evaluar gráficos (Cleveland, Tufte, Car, Wainer, etc).

  • Basado en el estudio de la percepción gráfica.

  • Las mejores visualizaciones son aquellas que requieren el uso de la visión “pre-attentive” (instantáneo, sin aparente esfuerzo visual) (Cleveland and McGuill 1985).

Mencionaremos algunos de ellos en proximas clases!

Introducción a la Gramática gráfica

(Wilkinson 2006) creó la gramática gráfica que describe las característica esenciales que componen todo gráfico estadístico.

¿Qué es una gramática?

La gramática es un conjunto de reglas que ayudan a definir y establecer componentes de un lenguaje. La gramática gráfica es un marco que nos permite describir los componentes de cualquier gráfico, define reglas gramaticales para crear gráficos.

Gramática gráfica

La gramática gráfica responde las siguientes preguntas:

  • ¿Qué es un gráfico estadístico

  • ¿Cómo describir un gráfico?

  • ¿Cómo crear un gráfico?

Un gráfico estadístico es un mapeo de los datos a atributos estéticos (ejem: color, forma, tamaño) de objetos geométricos (ejem: puntos, lineas, barras)

Gramática gráfica en capas

(Wickham 2010) presenta una parametrización alternativade la gramática gráfica (Wilkinson 2006).

Gramática gráfica en capas, construye un gráfico en base a capas múltiples de datos.

GGC difiere de GG en la forma en que se disponen los componentes de un gráfico, el desarrollo de una jerarquía por defecto y el lenguaje de programación donde se desarrolla.

Visualización de datos con ggplot2

¿Qué es ggplot2?:

  • ggplot2 es un paquete para producir gráficos estadísticos o de datos desarrollado por (Wickham 2016).

  • Tiene una teoría que lo sustenta basada en el Grammar of Graphics (Wilkinson 2006) usada para definir GGC.

  • Es el paquete de gráficos estadísticos más dominante en R, tiene casi 17 años ( 10/06/2007)

  • ggplot2: Elegant Graphics for Data Analysis

¿Porqué usar ggplot2?

Principales:

  • Porque las visualizaciones realizadas con ggplot2 tienen un sustento teórico basado en la gramática gráfica.

  • Permite por defecto realizar gráficos de calidad publicable

  • Suficientemente flexible para realizar visualizaciones, previamente definidas o totalmente novedosas.

  • Paquete en su versión estable, con un equipo que lo mantiene actualizado (Posit)

Gramática de gráficos (gg)

  • Un estadístico es una función de los datos, como la media muestral \(\bar x = \sum_{i=1}^n \frac{x_i}{n}\) o la varianza muestral \(S^2 = \sum_{i=1}^n \frac{(xi- \bar x)^2}{n-1}\)

  • La gramática gráfica provee una estrecha conexión entre los datos y estadísticos.

  • Punto clave sobre ggplot2, es que hace de los gráficos otro tipo de estadísticos.

  • Un gráfico estadístico basado en GG es un mapeo de los datos a atributos estéticos (tamaño, color, forma) de objetos geométricos (lineas, puntos, barras)

¿Porqué usar una gramática gráfica ?

  • Graficar cosas que sabés

  • Crear nuevas visualizaciones

  • Tal vez encontrar mejores gráficos para visualizar tus datos

El límite es tu imaginación! >

ggplot2

  • Conjunto de componentes independientes, le da flexibilidad

  • No limitado a gráficos pre determinados, crear lo que quieras

  • Definido en base a un conjunto de principios, fácil de aprender

  • Podés producir gráficos estandard de calidad publicable en poco tiempo

  • Diseñado para trabajar iterativamente agregando capas

Gramática de gráficos

Todos los gráficos se componen de data y los mapeos entre los datos y los atributos estéticos.

Hay 5 componentes de mapeo,

  • layers
  • scales
  • coord
  • facets
  • theme

Gramática de gráficos

  • layers: elementos geométricos (geoms, son puntos, lineas, rectángulos, texto, …) y transformaciones estadísticas (stats, son identidades, conteos, bins,…)

  • scales: mapea valores en el espacio de los datos a valores en el espacio estético (color, tamaño, forma). También dibuja leyendas y ejes.

  • coord: describe como las coordenadas de los datos son mapeadas al plano del gráfico, también define ejes y lineas guias que ayudan a leer el gráfico. Normalmente Cartesianas, pero ej pie charts ej; polar.

Gramática de gráficos

  • facets: como subdividir y organizar subconjuntos de datos. Mismo gráfico con distintos subconjuntos de datos.

  • theme controla los detalles para mejorar la visualización, como el tamaño de la fuente, color de fondo …

De ahora en más se espera que…

Instalar ggplot2

  • Instalar ggplot2
install.packages("ggplot2") 
library(ggplot2) 

Versión en desarrollo: https://github.com/tidyverse/ggplot2

install.packages("devtools")
library(devtools)
install_github("tidyverse/ggplot2")

es parte de tidyverse qué veremos luego.

Ejemplo propina

# cargamos los datos disponibles en EVA
library(tidyverse)
propinas <- read_csv("propina.csv")
head(propinas)
# A tibble: 6 × 7
  total propina sexo  fuma  dia   momento cantidad
  <dbl>   <dbl> <chr> <chr> <chr> <chr>      <dbl>
1  17.0    1.01 F     No    Do    Noche          2
2  10.3    1.66 M     No    Do    Noche          3
3  21.0    3.5  M     No    Do    Noche          3
4  23.7    3.31 M     No    Do    Noche          2
5  24.6    3.61 F     No    Do    Noche          4
6  25.3    4.71 M     No    Do    Noche          4

Tres componentes básicos de todo plot

  • data: datos a visualizar

  • aes: un conjunto de mapeos estéticos entre las variables en los datos y las propiedades visuales (ejem: color, tamaño).

  • layer: al menos una capa que describe como representar cada observación. Las capas son creadas con la función geom.

Tres componentes de todo plot

  • data: propina
  • aes: total mapeado a la posición x , propina a la posición y.
  • layer: puntos mediante geom_point.
ggplot(data = propinas, aes(x = total, y = propina)) +  
  geom_point() +
  theme(aspect.ratio = 1)
  • aspect.ratio es el ratio entre el ancho y el alto

Diagrama de dispersion, datos propinas

Ejemplo propina

¿Qué vemos?

  • Hay una relación lineal débil entre propina y la cuenta total

  • Hay mucha variabilidad

  • Las lineas horizontales indican la preferencia de la gente a dar de a 1 dólar de propina c/u

Color, tamaño, forma y otros aes

Para agregar otras variables al gráfico podemos usar otros aes como color, forma o tamaño

aes(x = total, y = propina, colour = sexo)

aes(x = total, y = propina, shape = sexo)

aes(x = total, y = propina, size = cantidad)

Color

ggplot(data = propinas, aes(x = total, y = propina, colour = sexo)) +
  geom_point() + theme(aspect.ratio = 1)

Color fijo

Si queremos fijar un elemento estético a un valor fijo hay que hacerlo en la capa de afuera sin aes o usar I('blue') en aes

ggplot(data = propinas, aes(x = total, y = propina) )+
  geom_point(colour = "blue") + theme(aspect.ratio = 1)

Forma

ggplot(data = propinas, aes(x = total, y = propina, shape = sexo)) +
  geom_point() + theme(aspect.ratio = 1)

Tamaño

ggplot(data = propinas, aes(x = total, y = propina, size = cantidad)) +
  geom_point(alpha = 1 / 3) + theme(aspect.ratio = 1)

alpha = 1/3 transparencia donde cada punto es 1/3 del color

Tamaño

ggplot(data = propinas, aes(x = total, y = propina) ) +
  geom_point(size = 5, alpha = 1 / 3) + theme(aspect.ratio = 1)

Etiquetas a los ejes

ggplot(data = propinas, aes(x = total, y = propina) ) +
  geom_point(size = 5, alpha = 1 / 3) + theme(aspect.ratio = 1) + 
  labs(x = "Total de la cuenta en dólares", y =  "Propina en dólares")

Paneles

  • Se pueden desplegar variables categóricas adicionales en un gráfico particionando el panel.

  • Crea tablas de gráficos partiendo los datos en subconjuntos y mostrándolos el mismo gráfico para cada subconjunto.

  • Dos tipos: facet_grid y facet_wrap

facet_wrap

ggplot(data = propinas, aes(x = total, y = propina)) +
  geom_point() +  theme(aspect.ratio = 1) +
 facet_wrap( ~sexo)

facet_grid

ggplot(data = propinas, aes(x = total, y = propina)) +
  geom_point() + theme(aspect.ratio = 1) +
 facet_grid(sexo ~fuma)

Tu turno

Material del curso

Todo el material de este curso está bajo licencia Creative Commons BY-NC-SA 3.0

Anscombe, J., F. 1973. “Graphs in Statistical Analysis.” The American Statistician.
Cleveland, S., William, and Robert McGuill. 1985. “Graphical Perception and Graphical Methods for Analyzing Scientific Data.”
Gelman, Andrew, Cristian Pasarica, and Rahul Dodhia. 2002. “Let’s Practice What We Preach: Turning Tables into Graphs.” The American Statistician 56 (2): 121–30.
Matejka, Justin, and George Fitzmaurice. 2017. “Same Stats, Different Graphs: Generating Datasets with Varied Appearance and Identical Statistics Through Simulated Annealing.” In Proceedings of the 2017 CHI Conference on Human Factors in Computing Systems, 1290–94. ACM.
Tukey, John Wilder. 1977. “Exploratory Data Analysis.”
Wickham, Hadley. 2010. “A Layered Grammar of Graphics.” Journal of Computational and Graphical Statistics 19 (1): 3–28.
———. 2016. Ggplot2: Elegant Graphics for Data Analysis. Springer.
Wilkinson, Leland. 2006. The Grammar of Graphics. Springer Science & Business Media.